package com.yunsc.store.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.yunsc.common.utils.PageResult;
import com.yunsc.store.dto.CouponReceiveDTO;
import com.yunsc.store.entity.YunscCouponEntity;
import com.yunsc.store.entity.YunscUserCouponEntity;

import java.math.BigDecimal;
import java.util.List;

/**
 * 用户优惠券记录表
 *
 * @author adan
 * @email 2028038953@qq.com
 * @date 2024-04-22 11:35:51
 */
public interface YunscUserCouponService extends IService<YunscUserCouponEntity> {

    /**
     * 查询用户优惠券数量
     * @param userId
     * @return
     */
    int queryUserCoupon(Integer userId);



    /**
     * 创建用户优惠券
     * @param coupon
     * @param userId
     */
    void createUserCoupon(YunscCouponEntity coupon, Integer userId);

    List<YunscUserCouponEntity> queryUserCouponById(Integer couponId, Integer userId);

    /**
     * 领取优惠券
     * @param couponId 优惠券ID
     * @param userId 用户ID
     */
    void receiveCoupon(Integer couponId, Integer userId);

    /**
     * 取消优惠券
     * @param dataType 优惠券类型
     * @param page 当前页
     * @param userId 用户ID
     */
    PageResult<YunscUserCouponEntity> queryUserCouponList(String dataType, Integer page, Integer userId);


    /**
     * 批量更新优惠券过期时间
     * @param coupons 优惠券ID列表
     */
    void updateCouponExpiration(List<YunscUserCouponEntity> coupons);

    /**
     * 查询用户优惠券列表
     * @param userId 用户ID
     * @return
     */
    List<YunscUserCouponEntity> queryUserCouponList(Integer userId);

    List<YunscUserCouponEntity> queryGoodsAvailableCoupons(Integer couponId, Integer userId, BigDecimal orderTotalPrice, List<Integer> goodsIds);

    /**
     * 分页查询已领取的优惠券列表
     *
     * @param param    查询参数
     * @param storeId  店铺ID
     * @return 已领取的优惠券分页列表
     */
    PageResult<YunscUserCouponEntity> queryCouponReceivePageList(CouponReceiveDTO param, Integer storeId);
}

